if (p->dir == IOREQ_WRITE) {
__vmread(GUEST_DS_SELECTOR, &seg);
p->u.pdata = (void *)
- ((seg << 4) | (regs->esi & 0xFFFF));
+ ((seg << 4) + (regs->esi & 0xFFFF));
} else {
__vmread(GUEST_ES_SELECTOR, &seg);
p->u.pdata = (void *)
- ((seg << 4) | (regs->edi & 0xFFFF));
+ ((seg << 4) + (regs->edi & 0xFFFF));
}
} else {
p->u.pdata = (void *) ((p->dir == IOREQ_WRITE) ?
}
p->u.pdata = (void *) gva_to_gpa(p->u.data);
-
if (test_bit(5, &exit_qualification))
p->count = vm86 ? regs->ecx & 0xFFFF : regs->ecx;
if ((p->u.data & PAGE_MASK) !=
if (vm86) {
__vmread(GUEST_CS_SELECTOR, &cs);
- inst_addr = (cs << 4) | eip;
+ inst_addr = (cs << 4) + eip;
} else
inst_addr = eip; /* XXX should really look at GDT[cs].base too */
unsigned long seg;
__vmread(GUEST_ES_SELECTOR, &seg);
- if (((seg << 4) | (inst_decoder_regs->edi & 0xFFFF)) == va) {
+ if (((seg << 4) + (inst_decoder_regs->edi & 0xFFFF)) == va) {
dir = IOREQ_WRITE;
__vmread(GUEST_DS_SELECTOR, &seg);
- addr = (seg << 4) | (inst_decoder_regs->esi & 0xFFFF);
+ addr = (seg << 4) + (inst_decoder_regs->esi & 0xFFFF);
} else {
dir = IOREQ_READ;
- addr = (seg << 4) | (inst_decoder_regs->edi & 0xFFFF);
+ addr = (seg << 4) + (inst_decoder_regs->edi & 0xFFFF);
}
} else { /* XXX should really look at GDT[ds/es].base too */
if (va == inst_decoder_regs->edi) {